<!DOCTYPE html>
<html>
	<head>
		<title>Model模型层</title>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<script src="js/inc.js"></script>
	</head>
	<body>
		<fieldset>
                        <legend>Model模型层</legend>
                        <ol>
				<li>
					<h2 class="title_h2">Model模型层规范</h2>
                                        Model类文件都放在<code>application/classes/Model</code>文件夹里面
                                        <br>Model必须要继承<code>Soter_Model</code>类，类名必须带<code>Model_</code>前缀。
                                        <br>示例如下：
                                        <br>1.新建Model文件application/classes/Model/TestModel.php
                                        <br>2.输入以下代码：
                                        <pre class="brush:php">
                                                &lt;?php

                                                class Model_TestModel extends Soter_Model {

                                                }
                                        </pre>
                                </li>
                                <li>
                                        <h2 class="title_h2">使用Model层</h2>
                                        可以在任意地方使用下面的代码加载一个Model层类：
                                        <br>示例如下：
                                        <pre class="brush:php">
                                                Sr::model('TestModel');
                                        </pre>
                                        我们可以看到上面有一个参数，这个是什么意思呢，是加载Model类的时候，不需要前缀<code>Model_</code>， 
                                        <br>比如上面的：Model_TestModel，加载的时候只用Sr::model('TestModel');
                                        <br>例如:我们要创建Model类文件名为ArticleModel.php，类名就是Model_ArticleModel，那么参数就要输入ArticleModel
                                </li>
				<li>
					<h2 class="title_h2">示例一</h2>
                                        比如有文件：classes/Model/ArticleUser.php 
                                        <br>那么ArticleUser.php文件里面的类名就应该是：Model_ArticleUser。
                                        <br>那么要加载Model类如下:
                                        <pre class="brush:php">
                                                Sr::model('ArticleUser');
                                        </pre>
				</li>
				<li>
					<h2 class="title_h2">示例二</h2>
                                        比如有文件：classes/Model/User/Message.php 
                                        <br>那么Message.php文件里面的类名就应该是：Model_User_Message,也就是下划线代表着文件夹的分隔符。
                                        <br>那么要加载Model类如下:
                                        <pre class="brush:php">
                                                Sr::model('User_Message');
                                                //还有另一种方式例如以下
                                                Sr::model('User/Message.php');
                                                //我们也可以不用带.php后缀,例如以下：
                                                Sr::model('User/Message');
                                        </pre>
                                <li>
					<h2 class="title_h2">创建自己的Model类</h2>
                                        下面我们自定义一个加载Model层类
                                        <br>1.新建Model文件application/classes/Model/TestModel.php
                                        <br>2.输入以下代码：
                                        <pre class="brush:php">
                                                &lt;?php

                                                class Model_TestModel extends Soter_Model {

                                                        public function hello(){
                                                                return 'hello model';
                                                        }
                                                }  
                                        </pre>
                                        3.新建控制器文件application/classes/Controller/Welcome.php
                                        <br>4.输入以下代码：
                                        <pre class="brush:php">
                                                &lt;?php

                                                class Controller_Welcome extends Soter_Controller {

                                                        public function do_model() {
                                                                $model = Sr::model('TestModel');
                                                                echo $model->hello();
                                                        }
                                                }  
                                        </pre>                                        
                                        5.浏览器访问：http://127.0.0.1/index.php/Welcome/model.do
                                        <br>//将输出：hello model
                                        <br>为什么会输出“<b>hello model</b>”?
                                        <br>我们可以从上面例子看Controller_Welcome控制器类，
                                        <br>在do_model方法里面做了加载Model层中的Model_TestModel类赋值给<b>$model</b>。
                                        <br>然后通过<b>$model</b>输出Model_TestModel类中的hello方法,
                                        <br>所以浏览器才会显示“<b>hello model</b>”。
                                </li> 
                        </ol>
                </fieldset>
		<script src="js/inc.foot.js"></script>
	</body>
</html>
